// 接口类型
export default {}
// 接口类型中的可选成员（？）、只读成员（readonly）、动态成员的添加( [prop:string]:string | number | boolean  )
interface ResponseType {
  code: number,
  msg: string
  data:  object | Array<any>
}

// 定义ajax参数对象的接口类型
interface ParamsTypes {
  username?: string,
  password?: string,
  sex?:number,
  // 其他的参数名，怎么定义？

  //就需要允许动态的扩展对象的属性
  [prop:string]:string | number | boolean,// 允许你动态 的扩展对象的属性；
//   username: string,
//  password: string,
}

// {username, password, sex, height}

interface AjaxTypes {
  url:string,
  type:string,
  data: ParamsTypes
  async?: boolean  // ? 表示可选成员
  readonly success: (res:ResponseType)=>void // readonly，表示 只读成员
}


// const myAjax = (obj:AjaxTypes)=>{
//   let xhr = new XMLHttpRequest();
//   xhr.open(obj.type, obj.url, obj.async??true)
//   xhr.setRequestHeader('content-type',"application/x-www-form-urlencoded")
//   xhr.send(obj.data)
//   xhr.onreadystatechange = function(){
//     //.. 
//     let res = JSON.parse(xhr.responseText)
//     obj.success(res)
//   }

// }

// myAjax({url:"/login",type:'post',data:{username:'wqw',password:'123'}, success(res){}})

// myAjax({url:"/getUserList",type:'post',data:{pageNum:1, pageSize:5}, success(res){}})

// let myobj: ParamsTypes = {username:'wqw', password:'123'}
// myobj.height = 180; // 动态添加属性,如果不允许，就会提示错误
